package br.com.requisicao.compra.canonico;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "pedido_cotacao_produto")
public class PedidoCotacaoProduto implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8985181623880207761L;

	@Id
	@GeneratedValue
	private Long codigo;

	@OneToOne
	@JoinColumn(name = "fornecedor_codigo")
	private Fornecedor fornecedor;

	@OneToOne
	@JoinColumn(name = "requisicao_compra_codigo")
	private RequisicaoCompra requisicaoCompra;

	@ManyToOne
	@JoinColumn(name = "requisicao_compra_produto_codigo")
	private RequisicaoCompraProduto requisicaoCompraProduto;

	@Column(name = "status_item")
	private String statusItem;

	@Column(name = "ordem_servico")
	private String ordemServico;

	private String posicao;

	private String descricao;

	private String dimensao;

	@Column(name = "codigo_produto")
	private String codigoProduto;

	private String quantidade;

	@OneToOne
	@JoinColumn(name = "unidade_medida_codigo")
	private UnidadeMedida unidadeMedida;

	@ManyToOne
	@JoinColumn(name = "pedido_cotacao_codigo")
	private PedidoCotacao pedidoCotacao;

	@Column(name = "valor_unitario")
	private BigDecimal valorUnitario;

	@Column(name = "valor_total")
	private BigDecimal valorTotal;

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
		return result;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		PedidoCotacaoProduto other = (PedidoCotacaoProduto) obj;
		if (codigo == null) {
			if (other.codigo != null)
				return false;
		} else if (!codigo.equals(other.codigo))
			return false;
		return true;
	}

	/**
	 * @return the codigo
	 */
	public Long getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 *            the codigo to set
	 */
	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the fornecedor
	 */
	public Fornecedor getFornecedor() {
		return fornecedor;
	}

	/**
	 * @param fornecedor
	 *            the fornecedor to set
	 */
	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}

	/**
	 * @return the requisicaoCompra
	 */
	public RequisicaoCompra getRequisicaoCompra() {
		return requisicaoCompra;
	}

	/**
	 * @param requisicaoCompra
	 *            the requisicaoCompra to set
	 */
	public void setRequisicaoCompra(RequisicaoCompra requisicaoCompra) {
		this.requisicaoCompra = requisicaoCompra;
	}

	/**
	 * @return the requisicaoCompraProduto
	 */
	public RequisicaoCompraProduto getRequisicaoCompraProduto() {
		return requisicaoCompraProduto;
	}

	/**
	 * @param requisicaoCompraProduto
	 *            the requisicaoCompraProduto to set
	 */
	public void setRequisicaoCompraProduto(
			RequisicaoCompraProduto requisicaoCompraProduto) {
		this.requisicaoCompraProduto = requisicaoCompraProduto;
	}

	/**
	 * @return the statusItem
	 */
	public String getStatusItem() {
		return statusItem;
	}

	/**
	 * @param statusItem
	 *            the statusItem to set
	 */
	public void setStatusItem(String statusItem) {
		this.statusItem = statusItem;
	}

	/**
	 * @return the ordemServico
	 */
	public String getOrdemServico() {
		return ordemServico;
	}

	/**
	 * @param ordemServico
	 *            the ordemServico to set
	 */
	public void setOrdemServico(String ordemServico) {
		this.ordemServico = ordemServico;
	}

	/**
	 * @return the posicao
	 */
	public String getPosicao() {
		return posicao;
	}

	/**
	 * @param posicao
	 *            the posicao to set
	 */
	public void setPosicao(String posicao) {
		this.posicao = posicao;
	}

	/**
	 * @return the descricao
	 */
	public String getDescricao() {
		return descricao;
	}

	/**
	 * @param descricao
	 *            the descricao to set
	 */
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	/**
	 * @return the dimensao
	 */
	public String getDimensao() {
		return dimensao;
	}

	/**
	 * @param dimensao
	 *            the dimensao to set
	 */
	public void setDimensao(String dimensao) {
		this.dimensao = dimensao;
	}

	/**
	 * @return the codigoProduto
	 */
	public String getCodigoProduto() {
		return codigoProduto;
	}

	/**
	 * @param codigoProduto
	 *            the codigoProduto to set
	 */
	public void setCodigoProduto(String codigoProduto) {
		this.codigoProduto = codigoProduto;
	}

	/**
	 * @return the quantidade
	 */
	public String getQuantidade() {
		return quantidade;
	}

	/**
	 * @param quantidade
	 *            the quantidade to set
	 */
	public void setQuantidade(String quantidade) {
		this.quantidade = quantidade;
	}

	/**
	 * @return the unidadeMedida
	 */
	public UnidadeMedida getUnidadeMedida() {
		return unidadeMedida;
	}

	/**
	 * @param unidadeMedida
	 *            the unidadeMedida to set
	 */
	public void setUnidadeMedida(UnidadeMedida unidadeMedida) {
		this.unidadeMedida = unidadeMedida;
	}

	/**
	 * @return the pedidoCotacao
	 */
	public PedidoCotacao getPedidoCotacao() {
		return pedidoCotacao;
	}

	/**
	 * @param pedidoCotacao
	 *            the pedidoCotacao to set
	 */
	public void setPedidoCotacao(PedidoCotacao pedidoCotacao) {
		this.pedidoCotacao = pedidoCotacao;
	}

	/**
	 * @return the valorUnitario
	 */
	public BigDecimal getValorUnitario() {
		return valorUnitario;
	}

	/**
	 * @param valorUnitario
	 *            the valorUnitario to set
	 */
	public void setValorUnitario(BigDecimal valorUnitario) {
		this.valorUnitario = valorUnitario;
	}

	/**
	 * @return the valorTotal
	 */
	public BigDecimal getValorTotal() {
		return valorTotal;
	}

	/**
	 * @param valorTotal
	 *            the valorTotal to set
	 */
	public void setValorTotal(BigDecimal valorTotal) {
		this.valorTotal = valorTotal;
	}

}
